home *** CD-ROM | disk | FTP | other *** search
-
- .if Pass1
- .include geosSym
- .include geosMac
- .endif
-
- DOODLEBase ==$2400
- KOALABase ==DOODLEBase+$0400
- ScreenBase ==KOALABase+8000
- ColorBase ==ScreenBase+1000
- ScreenColor ==ColorBase+1000
-
- ; These are the main DOODLE! and Koala handling routines
- ; as well as the GG/JJ decompression code.
- ; Some small support routines are not included and their
- ; operation is generally identifiable by their names.
-
-
- DOODLEProg:
- LoadW r0,Working
- jsr GraphicsString
-
- LoadW r6,OldName
- jsr FindFile
- txa
- beq 1$
-
- stx a0
- LoadW r0,ClearText
- jsr GraphicsString
- ldx a0
- jmp GeneralError
-
- 1$ MoveW dirEntryBuf+1,r1
- LoadW r2,9*1024+50
- LoadW r7,(DOODLEBase-2)
- jsr ReadFile
- txa
- beq DisplayDOODLE
-
- stx a0
- LoadW r0,ClearText
- jsr GraphicsString
- ldx a0
- jmp GeneralError
- DisplayDOODLE:
- LoadW r0,ClearText
- jsr GraphicsString
- jsr i_MoveData
- .word KOALABase
- .word $6000
- .word 8000
- jsr i_MoveData
- .word DOODLEBase
- .word $4000
- .word $0400
- jsr i_FillRam ; clear sprite data
- .word $0040
- .word $4400
- .byte $00
-
- jsr InitForIO
- MoveB cia2base,Temp1
- MoveB cia2base+$02,Temp2
- MoveB vicbase+$15,Temp3
- MoveB vicbase+$18,Temp4
- lda cia2base+$02
- ora #$03
- sta cia2base+$02
- lda cia2base
- and #$fc
- ora #$02
- sta cia2base ; vic chip set to bank 1
- lda #$08
- sta vicbase+$18 ; video to $6000, color set to $4000
- ClrB vicbase+$15
- LoadB $43f8,$10 ; sprite data at $4400
- jsr DoneWithIO
-
- lda DelayFlag
- beq 1$
-
- bra 2$
-
- 1$ sei
- jsr UpdateMouse
- cli
- lda mouseData
- bmi 1$
-
- bra 4$
- 2$ MoveB TimerTemp,TimerA
- ClrB TimerB
-
- 3$ sei
- jsr UpdateMouse
- cli
- lda mouseData
- bpl 4$
-
- dec TimerB
- bne 3$
-
- dec TimerA
- bne 3$
-
- 4$ jsr InitForIO
- MoveB Temp1,cia2base
- MoveB Temp2,cia2base+$02
- MoveB Temp3,vicbase+$15
- MoveB Temp4,vicbase+$18
- jsr DoneWithIO
- jsr i_ImprintRectangle
- .byte 0,199
- .word 0,319
- rts
- JJProg:
- LoadW r0,Working
- jsr GraphicsString
- LoadW r6,OldName
- jsr FindFile
- txa
- beq 1$
-
- stx a0
- LoadW r0,ClearText
- jsr GraphicsString
- ldx a0
- jmp GeneralError
-
- 1$ MoveW dirEntryBuf+1,r1
- LoadW r4,diskBlkBuf
- ClrW r5
- jsr ReadByte
- jsr ReadByte
-
- LoadW r0,DOODLEBase ; Destination address in r0
-
- jsr TADecompress
-
- jmp DisplayDOODLE
- KOALAProg:
- LoadW r0,Working
- jsr GraphicsString
- LoadW r6,OldName
- jsr FindFile
- txa
- beq 1$
-
- stx a0
- LoadW r0,ClearText
- jsr GraphicsString
- ldx a0
- jmp GeneralError
-
- 1$ MoveW dirEntryBuf+1,r1
- LoadW r2,10100
- LoadW r7,(KOALABase-2)
- jsr ReadFile
- txa
- beq DisplayKOALA
-
- stx a0
- LoadW r0,ClearText
- jsr GraphicsString
- ldx a0
- jmp GeneralError
- DisplayKOALA:
- LoadW r0,ClearText
- jsr GraphicsString
- jsr i_MoveData
- .word KOALABase
- .word $6000
- .word 8000
- jsr i_MoveData
- .word ScreenBase
- .word $4000
- .word 1000
- jsr i_FillRam ; clear sprite data
- .word $0040
- .word $4400
- .byte $00
- jsr InitForIO
-
- jsr i_MoveData
- .word ColorBase
- .word ctab
- .word 1000
- MoveB ScreenColor,vicbase+$21
- MoveB cia2base,Temp1
- MoveB cia2base+$02,Temp2
- MoveB vicbase+$11,Temp3
- MoveB vicbase+$15,Temp4
- MoveB vicbase+$16,Temp5
- MoveB vicbase+$18,Temp6
- lda cia2base+$02
- ora #$03
- sta cia2base+$02
- lda cia2base
- and #$fc
- ora #$02
- sta cia2base ; vic chip set to bank 1
- lda #$08
- sta vicbase+$18 ; video to $6000, color set to $4000
- ClrB vicbase+$15
- lda vicbase+$11
- ora #$20
- sta vicbase+$11
- lda vicbase+$16
- ora #$10
- sta vicbase+$16
- LoadB $43f8,$10 ; sprite data at $4400
- jsr DoneWithIO
- lda DelayFlag
- beq 1$
-
- bra 2$
-
- 1$ sei
- jsr UpdateMouse
- cli
- lda mouseData
- bmi 1$
-
- bra 4$
-
- 2$ MoveB TimerTemp,TimerA
- ClrB TimerB
-
- 3$ sei
- jsr UpdateMouse
- cli
- lda mouseData
- bpl 4$
-
- dec TimerB
- bne 3$
-
- dec TimerA
- bne 3$
-
- 4$ jsr InitForIO
- MoveB Temp1,cia2base
- MoveB Temp2,cia2base+$02
- MoveB Temp3,vicbase+$11
- MoveB Temp4,vicbase+$15
- MoveB Temp5,vicbase+$16
- MoveB Temp6,vicbase+$18
- jsr DoneWithIO
- jsr i_ImprintRectangle
- .byte 0,199
- .word 0,319
- rts
- GGProg:
- LoadW r0,Working
- jsr GraphicsString
- LoadW r6,OldName
- jsr FindFile
- txa
- beq 1$
-
- stx a0
- LoadW r0,ClearText
- jsr GraphicsString
- ldx a0
- jmp GeneralError
-
- 1$ MoveW dirEntryBuf+1,r1
- LoadW r4,diskBlkBuf
- ClrW r5
- jsr ReadByte
- jsr ReadByte
-
- LoadW r0,KOALABase ; Destination address in r0
-
- jsr TADecompress
-
- jmp DisplayKOALA
- TADecompress: ; Destination address in r0
- MoveW r0,r10
- AddVW 10100,r10
- 1$ jsr GetMemByte
- cmp #$fe
- beq 3$
-
- jsr PutMemByte
- bra 1$
-
- 3$ jsr GetMemByte
- pha
- jsr GetMemByte
- tax
- pla
- 4$ jsr PutMemByte
- dex
- bne 4$
-
- bra 1$
-
-
-
- GetMemByte:
- jsr ReadByte
- cpx #$00
- beq 1$
-
- pla
- pla
-
- 1$ rts
- PutMemByte:
- ldy #$00
- sta (r0),y
- pha
- IncW r0
- CmpW r0,r10
- bcs 1$
-
- pla
- rts
-
- 1$ pla
- LoadW r0,ClearText
- jsr GraphicsString
-
- pla
- pla
- pla
- pla
- ldx #$0b
- jmp GeneralError
- Working:
- .byte NEWPATTERN,0,MOVEPENTO
- .word 110
- .byte 90,RECTANGLETO
- .word 210
- .byte 110,FRAME_RECTO
- .word 110
- .byte 90,ESC_PUTSTRING,126,0,102,BOLDON,"- Working -",PLAINTEXT,0
-
- ClearText:
- .byte NEWPATTERN,2,MOVEPENTO,0,0,80,RECTANGLETO
- .word 319
- .byte 120,0
-
- .ramsect
-
- Temp1: .block 1
- Temp2: .block 1
- Temp3: .block 1
- Temp4: .block 1
- Temp5: .block 1
- Temp6: .block 1
- TimerA: .block 1
- TimerB: .block 1
- LastMemByte:
- .block 1
-
- .end